package co.edu.poli.ficb.agl.automatable.modelo.automatas;

import co.edu.poli.ficb.agl.automatable.modelo.Simbolo;

public class ParejaEstadoSimbolo implements Comparable<ParejaEstadoSimbolo> {

	/**
	 * @uml.property  name="estado"
	 * @uml.associationEnd  
	 */
	private Estado estado;
	/**
	 * @uml.property  name="simbolo"
	 * @uml.associationEnd  
	 */
	private Simbolo simbolo;

	/**
	 * 
	 * @param estado
	 * @param simbolo
	 */
	public ParejaEstadoSimbolo(Estado estado, Simbolo simbolo) {
		this.setEstado(estado);
		this.setSimbolo(simbolo);
	}
	
	@Override
	public int compareTo(ParejaEstadoSimbolo other) {
		if (this.getEstado().equals(other.getEstado())) 
			return this.getSimbolo().compareTo(other.getSimbolo());
		else 
			return this.getEstado().compareTo(other.getEstado());
	}

	/**
	 * @param estado
	 * @uml.property  name="estado"
	 */
	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	/**
	 * @return
	 * @uml.property  name="estado"
	 */
	public Estado getEstado() {
		return estado;
	}

	/**
	 * @param simbolo
	 * @uml.property  name="simbolo"
	 */
	public void setSimbolo(Simbolo simbolo) {
		this.simbolo = simbolo;
	}

	/**
	 * @return
	 * @uml.property  name="simbolo"
	 */
	public Simbolo getSimbolo() {
		return simbolo;
	}
	
	/**
	 * 
	 */
	@Override
	public String toString() {
		return "("+this.getEstado()+","+this.getSimbolo()+")";
	}
}